package com.bdqn.t382.mapper.user;

import com.bdqn.t382.pojo.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface SysUserMapper {
    public int count();
    /**
    *
    */
 public List<SysUser> getUserList();

//根据用户真实姓名模糊匹配查询用户

   public List<SysUser> getUsersByRealName(String realName);
//   查询用户列表

       public List<SysUser> getUserListByPojo(SysUser sysUser);

       //查询用户列表
       public List<SysUser> getUserListByMap(Map<String, Object> userMap);
        /**
         * 查询用户列表
         * @Param String, int
         */
        public List<SysUser> getUserListByParams(@Param("realName") String realName, @Param("roleId") int roleId);
       /**
         * 查询用户列表，包括角色名称
         * @Param SysUser
         */
       public List<SysUser> getUserListWithRoleName(SysUser sysUser);
     /**
      * 根据角色 id 查询用户，包含系统角色实例
      * @Param Integer
      */
     public List<SysUser> getUserListByRoleId(@Param("roleId") Integer roleId);
     /**
       * 根据用户 id 查询用户及相关地址
       * @Param Integer
       */
     public List<SysUser> getUserAndAddressesByUserId(@Param("userId") Integer userId);
     /**
      * 添加用户
      * @param
      * @return int 影响的行数
      */
     public int add(SysUser user);
      /**
      * 修改用户
      * @param
      * @return int 影响的行数
      */
     public int modify(SysUser user);
   /**
       * 修改个人密码
       * @param id
       * @param pwd
       */
   public int updatePwd(@Param("id") Integer id, @Param("password") String pwd);
   /**
     * 删除用户
     * @param id 要删除的用户的 id
     */
    public int deleteUserById(@Param("id") Integer id);

    /**
      * 查询用户列表(分页查询)
      * @param realName
      * @param roleId
      * @return
      */
    public List<SysUser> selectList(@Param("realName") String realName, @Param("roleId") Integer roleId);
    /**
     * Choose选择
     *
     * @param account
     * @param realName
     * @param roleId
     * @param createdTime
     * @return
     */
    public List<SysUser> selectListByChoose(@Param("account") String account, @Param("realName") String realName, @Param("roleId") Integer roleId, @Param("createdTime") Date createdTime);
    /**
     * 根据角色Id数组 查询用户列表信息
     *
     * @param roleIds
     * @return
     */
    public List<SysUser> getUserByRoleIdArray(Integer[] roleIds);
    /**
      * 根据角色 id 集合 查询用户列表信息
      * @param roleList
      * @return
      */
    public List<SysUser> getUserByRoleIdList(List<Integer> roleList);
    /**
     * 根据角色ID集合(集合存在Map中) 查询用户列表信息
     *
     * @param roleMap
     * @return
     */
    public List<SysUser> getUserByRoleIdMap(Map<String, Object> roleMap);
 /**
  * 分页查询用户列表
  * @param realName
  * @param roleId
  * @param pageBegin
  * @param pageSize
  * @return
  */
   public List<SysUser> selectPageList(@Param("realName")String realName
 ,@Param("roleId")Integer roleId
 ,@Param("pageBegin")Integer pageBegin
 ,@Param("pageSize")Integer pageSize);

}
